package osb.map.map;

import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MKAddrInfo;
import com.baidu.mapapi.MKBusLineResult;
import com.baidu.mapapi.MKDrivingRouteResult;
import com.baidu.mapapi.MKPoiInfo;
import com.baidu.mapapi.MKPoiResult;
import com.baidu.mapapi.MKSearch;
import com.baidu.mapapi.MKSearchListener;
import com.baidu.mapapi.MKSuggestionResult;
import com.baidu.mapapi.MKTransitRouteResult;
import com.baidu.mapapi.MKWalkingRouteResult;
import com.baidu.mapapi.PoiOverlay;

/**
 * 搜索周边
 * 内部类实现MKSearchListener接口,用于实现异步搜索服务 坐标地理信息反查
 * @author Administrator
 *
 */

public class Map_MkSearch implements MKSearchListener
{

	private static MKSearch mMKSearch;
	private static PoiOverlay poioverlay;
	private static String resultString;     //周边热点
	
	// Map_MkSearch.GetSearchResult(pt) 例子 pt 是一个坐标
	public static String GetSearchResult(GeoPoint pt) // 获取周边热点结果集
	{
		mMKSearch = new MKSearch();
		mMKSearch.init(Map.Public_Static_Map.mapManager, new Map_MkSearch());
		mMKSearch.reverseGeocode(pt);
		return resultString;
	}

	// 获取周边范围内指定类型热点 ---- 坐标点 关键字 范围
	// GeoPoint p2 = new GeoPoint((int) (26.029014 * 1E6), (int) (119.220421 * 1E6));
	// Map_MkSearch.GetSearch_appoint("ATM",p2,50000) ; //例子
	public static void GetSearch_appoint(String keywords, GeoPoint pt, int scope) 
	{
		mMKSearch = new MKSearch();
		mMKSearch.init(Map.Public_Static_Map.mapManager, new Map_MkSearch());
		mMKSearch.poiSearchNearBy(keywords, pt, scope);
	}
	
	// 重载
	@Override
	// 获得周边热点
	public void onGetAddrResult(MKAddrInfo result, int iError)
	{
		if (result == null)
		{
			return;
		}
		StringBuffer sb = new StringBuffer();
		// 经纬度所对应的位置
		sb.append(result.strAddr).append("\r\n");

		// 判断该地址附近是否有POI（Point of Interest,即兴趣点）
		if (null != result.poiList)
		{
			// 遍历所有的兴趣点信息
			for (MKPoiInfo poiInfo : result.poiList)
			{
				sb.append("----------------------------------------").append( "/n/r");
				sb.append("名称：").append(poiInfo.name).append("\r\n");
				sb.append("地址：").append(poiInfo.address).append("\r\n");
				sb.append("经度：").append(poiInfo.pt.getLongitudeE6() / 1000000.0f).append("\r\n");
				sb.append("纬度：").append(poiInfo.pt.getLatitudeE6() / 1000000.0f).append("\r\n");
				sb.append("电话：").append(poiInfo.phoneNum).append("\r\n");
				sb.append("邮编：").append(poiInfo.postCode).append("\r\n");
				sb.append("类型：").append(poiInfo.ePoiType).append("\r\n");
			}
		}
		resultString = sb.toString();
	}

	@Override
	public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError)
	{
	}

	@Override
	public void onGetPoiResult(MKPoiResult result, int type, int iError)
	{
		if (result == null)
		{
			return;
		}
		
		Map.Public_Static_Map.mapView.invalidate();		
		if(poioverlay!=null)
		{	
			Map.Public_Static_Map.mapView.getOverlays().remove(poioverlay);   //先清空在重绘
		}
		
		// PoiOverlay是baidu map api提供的用于显示POI的Overlay
		poioverlay = new PoiOverlay(Map.Public_Static_Map,Map.Public_Static_Map.mapView);
		
		// 设置搜索到的POI数据
		poioverlay.setData(result.getAllPoi());
		
//		Map.Public_Static_Map.mapView.getOverlays().clear();

		Map.Public_Static_Map.mapView.invalidate();
		
		// 在地图上显示PoiOverlay（将搜索到的兴趣点标注在地图上）
		Map.Public_Static_Map.mapView.getOverlays().add(poioverlay);
	}

	@Override
	public void onGetTransitRouteResult(MKTransitRouteResult result, int iError)
	{
	}


	@Override
	public void onGetBusDetailResult(MKBusLineResult arg0, int arg1)
	{
	}

	@Override
	public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1)
	{
	}

	@Override
	public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1)
	{
	}
}